/*
 * Copyright (c) 2005, Thomas J. Clancy
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy of 
 * this software and associated documentation files (the "Software"), to deal in 
 * the Software without restriction, including without limitation the rights to use, 
 * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the 
 * Software, and to permit persons to whom the Software is furnished to do so, 
 * subject to the following conditions:
 * 
 * 	1. 	The above copyright notice and this permission notice shall be included in 
 * 		all	copies or substantial portions of the Software. 
 * 
 * 	2.	Neither the name of the organization nor the names of its contributors may 
 * 		be used to endorse or promote products derived from this software without 
 * 		specific prior written permission.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 
 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *  
 */

package org.jcs.simulation.neds.gui;

import org.jcs.simulation.neds.Coordinate;
import org.jcs.simulation.neds.Dimensions;
import org.jcs.simulation.neds.Patch;

import javax.media.j3d.Material;
import javax.vecmath.Color3f;

public class GuiPatch3D {
    private static final long serialVersionUID = 5697856423431538249L;
    private Patch patch = null;
    private Coordinate upperLeft;
    private Dimensions size;
    private Material material = new Material();
    
    public Material getMaterial()
    {
    	return material;
    }

    public GuiPatch3D(Patch patch, Coordinate ul, Dimensions size) {
        this.upperLeft = ul;
        this.size = size;
        this.patch = patch;
        Color3f green = new Color3f(0.0f, 1.0f, 0.0f);
		material.setCapability(Material.ALLOW_COMPONENT_WRITE);
		material.setEmissiveColor(green);
    }

    public void paint() {
        paintPatch();
    }
    
    public Coordinate getUpperLeft() {
        return upperLeft;
    }
    
    public Dimensions getSize() {
        return size;
    }

    private void paintPatch() {
        double d = patch.getPercentRemainingFood();
        Color3f green = new Color3f(0.0f, new Float(d)/100.0f, 0.0f);
		material.setEmissiveColor(green);
    }
    
}
